const express = require('express')
const router = express.Router()
const UserModel = require('../db/models/UserModel')
const md5 = require('md5')
const { RES_CODE } = require('../utils/constants')
const { createToken } = require('../utils/tokenUtils')
// 引入中间件  统一校验token
const verifyToken = require('../middlerwares/verifyToken')


// 接口就是跳转的路由

/* 
注册登录路由 
1. 读取参数数据
2. 处理数据(用到数据库)
3. 返回响应
*/
router.post('/login', async (req, res) => {
  // 读取参数 body参数有两个参数 username,pwd  body参数存在req
  const { username, pwd } = req.body
  console.log(username, pwd );
  try {
    // 根据username和pwd查询对应的user
    const user = await UserModel.findOne({username, pwd: md5(pwd) })
    // 如果没有user 返回提示登录失败的信息
    if (!user) {
      res.json({
        code: RES_CODE.DATA_ERROR,
        message: '用户名或密码错误'
      })
    }
    // 如果有user 根据user的id生成token  返回包含token和user的数据
    const token = createToken(user.id)
    res.json({
      code: RES_CODE.SUCCESS,
      data:{
        token,
        user
      },
      message: '登录成功'
    })
  } catch (error) {
    console.log(error); // 排错专用
    res.send({
      code: RES_CODE.ERROR,
      message:'服务器出错'
    })
  }
})


/* 
获取登录用户信息  引入中间件
*/
router.get('/info', verifyToken , async (req, res) => {
  // 得到userId
  const userId = req.userId
  // 查询数据得到对应user
  const user = await UserModel.findById(userId)
  res.json({
    code: RES_CODE.SUCCESS,
    data: user,
    message: '获取登陆用户成功'
  })
})


/* 
退出登录的接口
*/
router.get('/logout' , verifyToken, (req,res)=>{
  // 清除保存在后台的当前用户的数据(当前没有数据)
  // 返回成功退出的响应
  res.json({
    code: RES_CODE.SUCCESS,
    message: '成功退出'
  })
})




module.exports = router

